package com.example.rest;

/**
 * <p>
 *
 * </p>
 *
 * @author zhouchang
 * @see
 */
public enum RestCode {
    /**
     * 正常响应时返回此标识
     */
    REQUEST_SUCCESS(2000,"请求成功"),

    /**
     * 登录账号或密码错误时
     */
    USERNAME_PASSWORD_ERROR(4010,"账号或密码错误"),

    /**
     * Spring security 抛出 LockedException 时，返回此标识
     */
    USER_ACCOUNT_LOCKED_PERMANENT(4011,"账号永久性锁定"),

    /**
     * 当登录密码错误次数过多时，返回此标识
     */
    USER_ACCOUNT_LOCKED_TEMPORARY(4012,"账号暂时性锁定"),

    /**
     * Spring security 抛出 DisabledException 时，返回此标识
     */
    USER_ACCOUNT_DISABLED(4013,"账号已禁用"),

    /**
     * Spring security 抛出 AccountExpiredException 时，返回此标识
     */
    USER_ACCOUNT_EXPIRED(4014,"账号已过期"),
    /**
     * 当用户试图访问一个未被授权的URL时返回此标识
     */
    UNAUTHENTICATED(4030,"请求未授权"),

    /**
     * 用户试图访问一个不存在的URL时返回此标识
     */
    RESOURCE_NOT_FOUND(4040,"资源未找到"),

    /**
     * 用户请求的参数不符合约定时返回此标识
     */
    PARAMETER_ILLEGAL(4050,"非法请求参数"),

    EXCEL_NOT_VALID(4051,"数据校验未通过"), // Excel 相关的错误提示

    EXCEL_ROW_OUT_LIMIT(4052,"数据行数超出限制"), // Excel 相关的错误提示

    FLOW_LIMIT(4053,"当前访问量过大，请稍后再试"),

    DEGRADE(4055, "服务已触发熔断"),

    /**
     * 异常 {@see InsufficientAuthenticationException}出现时
     */
    INSUFFICIENT_CREDENTIALS(4060,"凭证缺失"),

    /**
     * 认证过程出现其他异常时
     */
    AUTHENTICATION_FAILED(4070,"认证失败"),

    /**
     * token无效时
     */
    TOKEN_INVALID(4080,"无效的令牌"),

    /**
     * token过期时
     */
    TOKEN_EXPIRED(4081,"过期的令牌"),

    /**
     * token密钥刷新时
     */
    FORCED_OFFLINE(4082,"被迫下线"),

    /**
     * 出现服务器内部未捕获的异常时返回此标识
     */
    SERVER_INNER_ERROR(5000,"服务繁忙")

    //... 继续添加，必须4位
    ;


    private final int code;
    private final String message;

    RestCode(int code, String message) {
        this.code = code;
        this.message = message;
    }

    public int getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }

}
